package com.jctrip.hotel.source.service.rezen;

import java.util.List;

import com.jctrip.hotel.source.model.OrderDataResult;
import com.jctrip.hotel.source.model.PriceCheckParam;
import com.jctrip.hotel.source.model.rezen.req.*;
import com.jctrip.hotel.source.model.rezen.resp.*;
import com.jctrip.hotel.source.model.rezen.resp.CityInfoDTO.CityInfoData;
import com.jctrip.hotel.source.model.rezen.resp.RoomTypeDTO.RoomType;
import com.jctrip.hotel.source.model.wehotel.req.OrderData;

/**
 * @Author henry
 * @Date 2023/8/12 10:56
 * @Description
 */
public interface RezenService {
    Long parseHotelId(String innId);

    String parseInnId(Long hotelId);

    Long parseHotelId3(String innId);

    String parseInnId3(Long hotelId);

    Boolean checkSourceIdIs2(String sourceId);

    List<CityInfoData> getCity(String secretId, String secretKey, Long groupId);

    List<HotelInfoDTO> queryHotelList(String secretId, String secretKey, Long groupId, String cityCode);

    List<RoomType> queryRoomType(String secretId, String secretKey, Long groupId, Long hotelId);

    ProductListDTO getRoomStatus(String secretId, String secretKey, Long groupId, Long hotelId, String roomTypeId,
            String start, String end);



    // 下单

    RezenBaseResp<RezenOrderResp>  reserveOrder(String secretId, String secretKey, RezenPostOrderReq req);
    // 二方下单
    OrderDataResult postOrder(String secretId, String secretKey, RezenPostOrderReq req, PriceCheckParam priceCheck);
    // 三方下单
    OrderDataResult postOrderByCompany(String secretId, String secretKey, RezenPostOrderReq req, PriceCheckParam priceCheck);
    // 查询
    OrderData getOrderStatus(String secretId, String secretKey, Long groupId, String outOrderId);
    // 取消

    Boolean cancelOrder(String secretId, String secretKey, Long groupId, Long orderId, String outOrderId);


    RezenPullOrderInhotelInfoResp pullOrderInhotelInfo(String sourceId, RezenPullOrderInhotelInfoReq req);

    String getProductId(String hotelId, String roomTypeCode, String sourceId, Integer breakfast, Integer cancelType, String calDate);

    List<HotelInfoIdDTO> queryHotelList2(String secretId, String secretKey, Long groupId);

    List<HotelInfoIdDTO> queryHotelListForCompany(String secretId, String secretKey, Long groupId);

    HotelDetailsResp queryHotelDetails(HotelDetailsReq hotelDetailsReq, String secretId, String secretKey);

    List<GetCompanyListResp> getCompanyList(HotelListReq req, String secretId, String secretKey);

    List<ProductBriefListByCompanyIdResp> queryRoomTypeByCompanyId(ProductBriefListByCompanyIdReq req, String secretId, String secretKey);

    List<ProductListByCompanyIdResp> getRoomStatusByCompanyId(ProductListByCompanyIdReq req, String secretId, String secretKey);

    RezenBaseResp<List<PostOrderCheckDTO>> checkPriceAndCount(PostOrderCheckReq req, String secretId, String secretKey);
}
